rpcd-mod-luci: strip colon from dnsmasq duid
authorAnsuel Smith <[email protected]>
Mon, 7 Dec 2020 16:57:49 +0000 (17:57 +0100)
committerPaul Donald <[email protected]>
Mon, 5 Aug 2024 16:19:43 +0000 (18:19 +0200)
Dnsmasq DHCPv6 use colons in the generated duid present in the lease file. Strip the colon as this is not supported by the OpenWrt config and follow the same way odhcpd use to display duid.

Fixes: #4543
Signed-off-by: Ansuel Smith <[email protected]>
(cherry picked from commit f71e9cbd42db24c7743589804dacfdf5513ca883)

libs/rpcd-mod-luci/src/luci.c

index 8b56dce6b7ad3ff11ab6b3228fd0a42b16c1a3e4..d9e2ab79ce6db31a7643a242124a96f427103226 100644 (file)
@@ -329,6 +329,15 @@ duid2ea(const char *duid)
        return &ea;
 }
 
+static void strip_colon_duid(char *str) {
+       char *pr = str, *pw = str;
+
+       while (*pr) {
+               *pw = *pr++;
+               pw += (*pw != ':');
+       }
+       *pw = '\0';
+}
 
 static struct {
        time_t now;
@@ -592,6 +601,8 @@ lease_next(void)
                                if (!e.hostname || !e.duid)
                                        continue;
 
+                               strip_colon_duid(e.duid);
+
                                if (!strcmp(e.hostname, "*"))
                                        e.hostname = NULL;